package algorithm.tree;

import jdk.nashorn.internal.ir.BinaryNode;

/**
 * 二叉树接口
 * @param <E>
 */
public interface BinaryTTree<E> {
    boolean isEmpty();
    int count(); //返回结点个数
    int height(); //返回高度
    BinaryNode getRoot(); //返回根结点
    BinaryNode getParent(BinaryNode node); //返回node的父母结点
    void preOrder(); //先根次序遍历二叉树
    void inOrder(); //中根次序遍历二叉树
    void postOrder(); //后根次序遍历二叉树
    void levelOrder(); //按层次遍历
    BinaryNode search(E element); //查找并返回元素为element的结点
    void insert(BinaryNode p, E element, boolean leftChild);//插入element元素做为p结点的左右孩子
    void remove(BinaryNode p,boolean leftChild); //删除p结点的左右子树
    void clear(); //清空
}
